/**
 * * filter
 * * * filter 为数组中的每个元素调用一次callback函数，
 * * 并利用所有使得callback返回true或等价于true的值的元素创建一个新数组
 * * callback 只会在已经赋值的索引上被调用，对于那些已经被删除或者从未被赋值的索引不会被调用。
 * * 那些没有通过 callback 测试的元素会被跳过，不会被包含在新数组中。
 * 
 * * 新数组
 * * 未被赋值的索引或已被删除的 不会调用
 */

var ary = [0, 1, 2];
ary[10] = 10;
var newArr = ary.filter(function (x) {
  console.log(x);   // 0 1 2 10
  return x === undefined;
});
console.log(newArr);  // []